package com.ncui.wisdomLearn.biz.user.controller;

import com.ncui.wisdomLearn.api.dto.LoginDTO;
import com.ncui.wisdomLearn.api.vo.LoginVO;
import com.ncui.wisdomLearn.biz.user.service.LoginService;
import com.ncui.wisdomLearn.common.common.R;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

/**
 * 登录认证接口
 *
 * @author ncui
 * @since 2025/1/1 15:30
 */
@RestController
@RequestMapping("/auth")
@RequiredArgsConstructor
public class LoginController {

    private final LoginService loginService;

    /**
     * 登录认证
     *
     * @param loginDTO 登录信息
     * @return 登录成功返回用户信息
     */
    @PostMapping("/login")
    public R<LoginVO> login(@RequestBody @Valid LoginDTO loginDTO) {
        return loginService.login(loginDTO);
    }

    /**
     * 注册用户
     *
     * @param loginDTO 登录信息
     * @return 注册成功返回用户信息
     */
    @PostMapping("/register")
    public R<Void> register(@RequestBody @Valid LoginDTO loginDTO) {
        return loginService.register(loginDTO);
    }

    /**
     * 退出登录
     *
     * @return 退出成功返回成功信息
     */
    @PostMapping("/logout")
    public R<Void> logout() {
        return loginService.logout();
    }

    /**
     * 获取登录状态
     *
     * @return 登录状态信息
     */
    @GetMapping("/status")
    public R<Boolean> getLoginStatus() {
        return loginService.getLoginStatus();
    }

    /**
     * 获取token信息
     *
     * @return token信息
     */
    @GetMapping("/token/info")
    public R<LoginVO> getTokenInfo() {
        return loginService.getTokenInfo();
    }
}
